type vector = { mutable x : float; mutable y : float; mutable z : float; }
type point = vector
type triangle = { sa : point; sb : point; sc : point; }
type trianglei = { isa : int; isb : int; isc : int; }
val cross : vector -> vector -> vector
val magnitude : vector -> float
val normalize : vector -> unit
val normalized : vector -> vector
val fromC3 : float * float * float -> vector
val toC3 : vector -> float * float * float
val diff : vector -> vector -> vector
val add : vector -> vector -> vector
val mult : float -> vector -> vector
val dot2d : point -> point -> point -> point -> float
val is_left : point -> point -> point -> float
val pt_in_seg : point -> point -> point -> bool
val pt_in_tborders : triangle -> point -> int
val pti_in_tiborders : (int -> point) -> trianglei -> point -> int
val triangle_split_seg :
  point -> point -> point -> point -> triangle * triangle
val trianglei_split_segi : int -> int -> int -> int -> trianglei * trianglei
val trianglei_split_segi_n : trianglei -> int -> int -> trianglei * trianglei
val triangle_split : triangle -> point -> int -> triangle * triangle
val trianglei_split : trianglei -> int -> int -> trianglei * trianglei
